﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using produccion.clases;
using System.Windows.Media.Imaging;
using System.IO;
using System.Data;
using System.Windows;
using System.Windows.Input;
using System.Windows.Controls;

namespace produccion.vistamodelo
{
   public class VMvisorFotoReferencia:ViewModelBase
    {

        #region fields

        private CLSMAEREF _Referencia = new CLSMAEREF();
        private CLSMAEMAT _mat = new CLSMAEMAT();
        private CLSMAEMTP _mtp = new CLSMAEMTP();
        
        #endregion

        #region public interfaces

        private string _strCodigo;
        public string strCodigo
        {
            get { return _strCodigo; }
            set 
            {
                _strCodigo = value;
                base.OnPropertyChanged("strCodigo");
                _Referencia.CODREF_REF = _strCodigo;
                _Referencia.Consultar();
                if (_Referencia.EXISTE)
                {
                    strNombre = _Referencia.NOMREF_REF;
                    imagen = conFoto();
                }
                else
                {
                    _mat.CODMAT_MAT = _strCodigo;
                    _mat.Consultar();
                    if (_mat.EXISTE)
                    {
                        imagen = conFoto();
                        strNombre = _mat.NOMMAT_MAT;
                    }
                }
            }
        }

        private string _strColor;
        public string strColor
        {
            get { return _strColor; }
            set
            {
                _strColor = value;
                base.OnPropertyChanged("strColor");
                imagen=conFoto();
            }
        }

        public string _strNombre;
        public string strNombre
        {
            get { return _strNombre; }
            set { _strNombre = value; base.OnPropertyChanged("strNombre"); }
        }

        private BitmapImage _imagen = null; 
        public BitmapImage imagen 
        {
            get { return _imagen; }
            set { _imagen = value; base.OnPropertyChanged("imagen"); }
        }

        #endregion

        #region Comandos
        RelayCommand _cmdDobleClic;
        public ICommand cmdDobleClic
        {
            get
            {
                if (_cmdDobleClic == null)
                {
                    _cmdDobleClic = new RelayCommand(r => dobleClic());
                }
                return _cmdDobleClic;
            }
        }
        #endregion

        #region Methods
        string cnxFto = "-";
        public BitmapImage conFoto()
        {
            try
            {
                string codref=strCodigo;
                string codcol = strColor;

                //Verificar conexion a Carpeta Remota antes de probar
                if (cnxFto.Equals("-"))
                {
                    if (Directory.Exists(MDOgeneral.Fotos_BOSI))
                    {
                        cnxFto = "S";
                    }
                    else
                    {
                        cnxFto = "N";
                    }
                }

                BitmapImage img = new BitmapImage();
                img.BeginInit();


                if (cnxFto.Equals("S"))
                {

                    //Foto para el color
                    if (!String.IsNullOrEmpty(codcol))
                    {
                        if (File.Exists(MDOgeneral.Fotos_BOSI + codref + codcol + ".jpg"))
                        {
                            img.UriSource = new Uri(MDOgeneral.Fotos_BOSI + codref + codcol + ".jpg");
                            img.EndInit();
                            return img;
                        }
                    }

                    //Foto sin color
                    if (File.Exists(MDOgeneral.Fotos_BOSI + codref + ".jpg"))
                    {
                        img.UriSource = new Uri(MDOgeneral.Fotos_BOSI + codref + ".jpg");
                        img.EndInit();
                        return img;
                    }

                    //Foto para cualquier color-Consultar colores para referencia
                    clases.CLSMAEPRO mae = new clases.CLSMAEPRO { CODREF_PRO = codref };
                    DataTable val = mae.BuscarColor();
                    foreach (DataRow r in val.Rows)
                    {
                        if (!String.IsNullOrEmpty(r["Codigo"].ToString()))
                        {
                            if (File.Exists(MDOgeneral.Fotos_BOSI + codref + r["Codigo"].ToString() + ".jpg"))
                            {

                                img.UriSource = new Uri(MDOgeneral.Fotos_BOSI + codref + r["Codigo"].ToString() + ".jpg");
                                img.EndInit();
                                return img;
                            }
                        }
                    }

                    //Foto para cualquier color-Consultar colores para mATERIApRIMA
                    _mtp.CODMAT_MTP = codref ;
                    DataTable valM = _mtp.BuscarColores();
                    foreach (DataRow r in valM.Rows)
                    {
                        if (!String.IsNullOrEmpty(r["Codigo"].ToString()))
                        {
                            if (File.Exists(MDOgeneral.Fotos_BOSI + codref + r["Codigo"].ToString() + ".jpg"))
                            {

                                img.UriSource = new Uri(MDOgeneral.Fotos_BOSI + codref + r["Codigo"].ToString() + ".jpg");
                                img.EndInit();
                                return img;
                            }
                        }
                    }

                }
                return null;
            }
            catch (Exception ex) { MessageBox.Show(ex.Message); return null; }
        }

        public void dobleClic()
        {
            try
            {
                //Para llamar el PDF de la ficha tecnica de la referencia
                if (File.Exists(MDOgeneral.Fotos_BOSI + strCodigo + ".PDF"))
                {
                    //MessageBox.Show("Si existe la ficha tecnica", "Confirmación", MessageBoxButton.OK, MessageBoxImage.Hand, MessageBoxResult.OK);
                    String fileName = MDOgeneral.Fotos_BOSI + strCodigo + ".PDF";
                    System.Diagnostics.Process process = new System.Diagnostics.Process();
                    process.StartInfo.FileName = fileName;
                    process.Start();
                }
                else
                {
                    MessageBox.Show("No existe la ficha tecnica", "Confirmación", MessageBoxButton.OK, MessageBoxImage.Error, MessageBoxResult.OK);
                }
            }
            catch (Exception ex) { MessageBox.Show(ex.Message); }
        }

        #endregion

        

    }

   public class VMvisorFotoMateriaPrima : ViewModelBase
    {

        #region fields

        private CLSMAEMAT _Materia = new CLSMAEMAT();

        #endregion

        #region public interfaces

        public string strCodigo
        {
            get { return _Materia.CODMAT_MAT; }
            set
            {
                _Materia.CODMAT_MAT = value;
                imagen = conFoto();
            }
        }
   
        private BitmapImage _imagen = new BitmapImage();
        public BitmapImage imagen
        {
            get { return _imagen; }
            set
            {
                _imagen = value;
                base.OnPropertyChanged("imagen");
            }
        }

        #endregion

        #region Methods
        string cnxFto = "-";
        public BitmapImage conFoto()
        {
            try
            {
                string strcod = strCodigo;
              

                //Verificar conexion a Carpeta Remota antes de probar
                if (cnxFto.Equals("-"))
                {
                    if (Directory.Exists(MDOgeneral.Fotos_BOSI))
                    {
                        cnxFto = "S";
                    }
                    else
                    {
                        cnxFto = "N";
                    }
                }

                BitmapImage img = new BitmapImage();
                img.BeginInit();


                if (cnxFto.Equals("S"))
                {

                    //Foto sin color
                    if (File.Exists(MDOgeneral.Fotos_ARTESA + strcod + ".jpg"))
                    {
                        img.UriSource = new Uri(MDOgeneral.Fotos_ARTESA + strcod + ".jpg");
                        img.EndInit();
                        return img;
                    }

                 

                }
                return null;
            }
            catch (Exception ex) { MessageBox.Show(ex.Message); return null; }
        }
        #endregion

    }

}
